//
//  SEGShareViewModel.h
//  SEGViewModel
//
//  Created by 山刘 on 2020/6/4.
//

#import <Foundation/Foundation.h>

#if __has_include(<WechatOpenSDK/WXApi.h>)
#import <WechatOpenSDK/WXApi.h>
#else
#import "WXApi.h"
#endif

#if __has_include(<ReactiveObjC/ReactiveObjC.h>)
#import <ReactiveObjC/ReactiveObjC.h>
#else
#import "ReactiveObjC.h"
#endif

#import "SEGShareHelpCardModel.h"

NS_ASSUME_NONNULL_BEGIN

@interface SEGShareViewModel : NSObject
@property (nonatomic, copy) NSString* channel;//分享渠道:10 微信 20朋友圈 30 qq 40 微博 50二维码
/// 分享界面类型 （用于区分某些需要分享成功回调的界面，不需要回调不用设置，使用默认值）
@property (nonatomic, assign) SEGShareVCViewType shareVCViewType;
/// 分享界面类型 （用于区分某些需要分享成功回调的界面，不需要回调不用设置，使用默认值）
@property (nonatomic, assign) SEGShareVCType shareVCType;
/// 分享链接(分享inviteurl，要拼接参数)
@property (nonatomic, copy) NSString* inviteUrlString;

@property (nonatomic, copy) NSString *objID;// 埋点，分享对象的主体ID
@property (nonatomic, copy) NSString *objName;// 埋点
@property (nonatomic, copy) NSString *objSection;// 埋点，分享对象的板块

/// 要分享的高清图片
@property (nonatomic, strong) UIImage *hdImage;

/**
 要分享的互助卡片内容
 */
@property (nonatomic, strong) SEGShareHelpCardModel *helpCardModel;

/**
 新增参数：用于承接小程序的参数
 */
@property (nonatomic, strong)NSDictionary *miniapp;

@property (nonatomic, copy) UIImage* shareImage;
@property(nonatomic, copy) NSString *shareImageUrlString;

@property(nonatomic, copy) NSString *shareTitle;
@property(nonatomic, copy) NSString *shareText;
@property (nonatomic, copy) NSString* shareUrlString;

/*
********************************************
*----------微信----------QQ----------朋友圈--- <== shareTypesArr
********************************************
*----------删除----------举报---------------- <== otherActionTypesArr
********************************************
*--------------------取消--------------------
********************************************
*/

/// 分享的类型数组 默认为微信、朋友圈
/// + 默认分享Icon数量: [A,B,C,D]  <== 初始化时设置
/// + 在默认分享Icon数量的数量上新增: [A,B,C,D,E,F]  <== shareTypesArrType = 1
/// +  重新设置分享Icon数量: [G,H,I,J]  <== shareTypesArrType = 2
/// + 清空所有分享Icon: []  <== array.count=0 或者 nil
@property (nonatomic, strong) NSMutableArray* shareTypesArr;
/// 分享界面的其他操作类型数组 默认为空
@property (nonatomic, strong) NSArray* otherActionTypesArr;

@property (nonatomic, strong) RACSubject *messageSubject;
@property (nonatomic, strong) RACSubject *sharedButtonClickSubject;

/// 分享业务埋点
/// @param objSection 分享对象的板块 用于事件埋点
- (void)segAnalyticsShareEventWithActionType:(SEGShareVCActionType)actionType
                                       objID:(NSString*)objID
                                     objName:(NSString*)objName
                                  objSection:(NSString*)objSection
                                 shareVCType:(SEGShareVCType)shareVCType;

/// 微信分享、微信朋友圈分享
/// @param scene WXSceneSession、WXSceneTimeline
/// @param image 图片分享，高清图
/// @param thumbImage 网页分享，缩略图
/// @param title 网页分享，标题
/// @param description 网页分享，描述
/// @param webpageUrl 网页分享，URLString
/// @see seg_shareToWeChatWithIsWechat:
-(void)segShareToWeChatWithScene:(int)scene
                       ImageData:(UIImage*)image
                      ThumbImage:(UIImage*)thumbImage
                           Title:(NSString*)title
                     Description:(NSString*)description
                      WebpageUrl:(NSString*)webpageUrl;

/// 分享到小程序
/// @param params 参数
- (void)seg_shareToWeChatMiniProgramWithParams:(NSDictionary*)params;

- (void)segShareToQQWithImageData:(UIImage*)image
                            Title:(NSString*)title
                 PreviewImageData:(UIImage*)previewImageData
                      Description:(NSString*)description
                       WebpageUrl:(NSString*)webpageUrl;

-(void)shareIconsDataSource:(NSArray*)dataSource shareTypesArrType:(NSString*)type;

-(void)shrareToWeChatOrQQWithType;

/// 点击分享按钮触发的事件
/// @param tag 按钮下标
/// @param cardImage 分享图片时的高清图
-(void)segClickSharedChannelButton:(NSInteger)tag cardImage:(UIImage*)cardImage;
@end

NS_ASSUME_NONNULL_END
